/**
 * MAP A 页面的Action
 * @author majun
 * @date 2017/5/4
 */

// 表格初始数据
export const UPDATE_MAP = "UPDATE_MAP";

// 更新表格增量数据
export const INCREASE_DATA = 'INCREASE_DATA';

// 刷新表格计数器
export const INCREASE_REFRESH_TIME = 'INCREASE_REFRESH_TIME';

let increaseInterval = null;

/**
 * 刷新表单的计数器
 * @returns {{type: string}}
 */
export const doIncreaseRefreshTime = () => {
	return {
		type: INCREASE_REFRESH_TIME
	}
}

/**
 * 异步获取数据
 * 这里用random模拟获取随机数据
 * @param timeOut
 * @returns {function(*)}
 */
export const doStartTimeOut = (timeOut) => {
	cancelAnimationFrame(increaseInterval);
	return (dispatch) => {
		let start = null;
		let dispatchData = (timeStamp) => {
			if(start === null)
				start = timeStamp;

			if(timeStamp - start >= timeOut) {
				start = null;
				dispatch(updateIncreaseData());
				dispatch(doIncreaseRefreshTime());
			}

			increaseInterval = requestAnimationFrame(dispatchData);
		}

		increaseInterval = requestAnimationFrame(dispatchData);
	}

}

/**
 * 返回表格的随机数据
 * @returns {{type: string, series: [*,*,*,*]}}
 */
export const updateIncreaseData = () => {

	let series = [{
		data: 7.0 + Math.random() * 10
	}, {
		data: -0.2 + Math.random() * 10
	}, {
		data: -0.9 + Math.random() * 10
	}, {
		data: 3.9 + Math.random() * 10
	}]

	return {
		type: INCREASE_DATA,
		series: series
	}
}

/**
 * 设置表单的初始数据
 */
export const updateMapData = () => {
	return {
		type: UPDATE_MAP,
		config: {
			title: {
				text: '不同城市的月平均气温',
				x: -20
			},
			subtitle: {
				text: '数据来源: WorldClimate.com',
				x: -20
			},
			xAxis: {

			},
			yAxis: {
				title: {
					text: '温度 (°C)'
				},
				plotLines: [{
					value: 0,
					width: 1,
					color: '#808080'
				}]
			},
			tooltip: {
				valueSuffix: '°C'
			},
			legend: {
				layout: 'vertical',
				align: 'right',
				verticalAlign: 'middle',
				borderWidth: 0
			},
			series: [{
				name: '东京',
				data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
			}, {
				name: '纽约',
				data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5]
			}, {
				name: '柏林',
				data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0]
			}, {
				name: '伦敦',
				data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8]
			}]
		}
	}
}